To communicate results, the importance of data visualization can't be overemphasized. In this article, I plot several figures to show the colors, markers and line styles in Matplotlib.
1. Colors
Matplotlib.colors supports several formats to specify the colors, including:
- A single letter for basic built-in colors, like
r
representing'red'
- Legal html names for colors, like
red
,burlywood
andchartreuse
- Gray shades, a string encoding a float in the
0-1
range, such as'0.75'
- Html hex string, like
'#eeefff'
- A tuple
(R, G, B)
where each of R , G , B are in the range[0,1]
, e.g.,(0.75, 0, 0.75)
1.1 Basic built-in colors
Undoubtedly, the basic built-in colors are the most commonly used in practice.
- b: blue
- g: green
- r: red
- c: cyan
- m: magenta
- y: yellow
- k: black
- w: white
matplotlib.colors.ColorConverter.colors
returns a dict of basic buil-in colors a single letter : (R, G, B)
.
>>> import matplotlib
>>> matplotlib.colors.ColorConverter.colors
{u'b': (0.0, 0.0, 1.0),
u'c': (0.0, 0.75, 0.75),
u'g': (0.0, 0.5, 0.0),
u'k': (0.0, 0.0, 0.0),
u'm': (0.75, 0, 0.75),
u'r': (1.0, 0.0, 0.0),
u'w': (1.0, 1.0, 1.0),
u'y': (0.75, 0.75, 0)}
I plot these colors on a figure, as shown below,
Fig. 1: Single letter colors
Useful links:
- HTML Color Names
- Demo: Named colors
2. Markers
matplotlib.markers is used by both the marker functionality of plot and scatter. All possible markers list here can be returned from matplotlib.lines.Line2D.markers
. Personally, 13 filled markers (filled_markers
) is enough for me.
filled_markers = ('o', 'v', '^', '<', '>', '8', 's', 'p', '*', 'h', 'H', 'D', 'd')
for idx, marker in enumerate(filled_markers):
y = [-idx]*5
ax.plot(y, 'o', marker=marker,
markeredgecolor='k', # mec
markerfacecolor='b', # mfc
markerfacecoloralt='r', # mfcalt, set the alternate marker face color
markeredgewidth=1.0, # mew, float value in points
fillstyle='none', # fillstyles = ('full', 'left', 'right', 'bottom', 'top', 'none')
markevery=None, # [None | int | length-2 tuple of int | slice | list/array of int | float | length-2 tuple of float]
markersize=8, label=repr(marker).replace('u', ''))
Filled markers:
Fig. 2: Filled markers
All possible markers:
Fig.3: All markers
3. Line styles:
matplotlib.lines.Line2D.lineStyles
returns all line styles.
linestyles = matplotlib.lines.lineStyles
linestyles_sorted = sorted(linestyles.items(), key=operator.itemgetter(0), reverse=True)
for idx, (linestyle, s) in enumerate(linestyles_sorted):
y = [-idx]*5
ax.plot(y, linestyle=linestyle, # ls, ‘solid’ | ‘dashed’ | ‘dashdot’ | ‘dotted’ | (offset, on-off-dash-seq)
# ls, '-' | '--' | '-.' | ':' | 'None' | ' ' | ''
linewidth=3, # float value in points
color='k', label=repr(linestyle).replace('u', ''))
The line styles are presented below.
Fig. 4: Line styles
PS: The source code is hosted on my GitHub, here.